结合构造函数模式和原型模式,使用构造函数定义对象的实例属性,而使用原型来定义对象的共享属性和方法。
组合使用构造函数模式和原型模式 (推荐 Es6,过时禁止使用的)
js
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function () {
console.log(
"Hello, my name is " + this.name + " and I am " + this.age + " years old."
);
};
let person1 = new Person("John", 30);
let person2 = new Person("Alice", 25);
person1.sayHello(); // 输出:Hello, my name is John and I am 30 years old.
person2.sayHello(); // 输出:Hello, my name is Alice and I am 25 years old.
缺点
- 仍然存在构造函数模式的一些缺点,例如每个实例都有自己的方法的副本。